from flask import Flask, session, g
from flask_migrate import Migrate

import config
from exts import db
from blueprints import user_bp
from blueprints import base_bp
from models import AdminModel, BorrowerModel

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
migrate = Migrate(app, db)
app.register_blueprint(base_bp)
app.register_blueprint(user_bp)

'''
flask db init
flask db migrate -m "create table models"
flask db upgrade
'''


# 全局变量g，各个页面访问已登录用户
@app.before_request
def before_request():
    user_id = session.get("user_id")
    user_level = session.get("user_level")

    if user_id:
        if user_level == "学生":
            try:
                user = BorrowerModel.query.filter_by(name=user_id).first()
                # 给g绑定一个叫user的遍历，他的值是user这个变量
                # setattr(g, "user", user)
                g.user = user  # 同上
            except:
                g.user = None
        else:
            try:
                user = AdminModel.query.filter_by(name=user_id).first()
                # 给g绑定一个叫user的遍历，他的值是user这个变量
                # setattr(g, "user", user)
                g.user = user  # 同上
            except:
                g.user = None
    else:
        g.user = None

# 请求来了 -> before_request -> 视图函数 -> 视图函数中返回模板 -> context_processor
# 上下文处理器
@app.context_processor
def context_processor():
    if hasattr(g, "user"):
        return {"user": g.user}
    else:{}


if __name__ == '__main__':

    app.run(debug=True)

'''

    #条件查询  
    #这种书有多少人借，通过书ID
    #这个人借了什么书，通过借阅者ID
一、管理员
1、图书管理
    入库
    删除
    更改
    查询
        模糊查询
2、借阅者管理
    查询
        模糊查询
    更改
    删除

二、未登录用户
    图书查询

三、已登录用户
    图书查询
    图书借阅
    自己借阅信息：借阅者ID



管理员模块
图书查询
图书借阅
图书入库
图书更改
图书删除
借阅信息查询
借阅者管理

未登录用户 base.html
图书查询

已登录用户
图书查询
图书借阅
自己借阅信息查询：借阅者ID



'''
